﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

public partial class Backend_CreateUser : System.Web.UI.Page
{
    const string passwordQuestion = "What is your favorite color";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            getAllRole();
        }

    }

    //Lấy ra danh sách tất cả các quyền.
    public void getAllRole()
    {
        string[] roles = Roles.GetAllRoles();
        UsersRoleList.DataSource = roles;
        UsersRoleList.DataBind();
    }


    //Tạo người dùng mới và phân quyền

    protected void CreateUser_OnClick(object sender, EventArgs e)
    {
        MembershipCreateStatus status;
        string passwordQuestion = "";
        string passwordAnswer = "";
        try
        {
            passwordAnswer = PasswordAnswerTextbox.Text;
            passwordQuestion = PasswordQuestionTextbox.Text;
            MembershipUser newUser = Membership.CreateUser(UsernameTextbox.Text, PasswordTextbox.Text, EmailTextbox.Text, passwordQuestion, passwordAnswer, true, out status);
            
            if (newUser == null)
            {
                Msg.Text = GetErrorMessage(status);
            }
            else
            {
                for (int i = 0; i < UsersRoleList.Items.Count; i++)
                {
                    CheckBox chkRole = (CheckBox)UsersRoleList.Items[i].FindControl("RoleCheckBox");
                    String username = UsernameTextbox.Text;
                    String rolename = chkRole.Text;
                    if (chkRole.Checked)
                    {
                        Roles.AddUserToRole(username, rolename);
                    }
                }
                Response.Redirect("UserList.aspx", false);
            }
        }
        catch (Exception ex)
        {
            Msg.Text = "An exception occurred creating the user." + ex.Message;
        }
    }
    // Bắt  lỗi khi thêm người dùng mới
    public string GetErrorMessage(MembershipCreateStatus status)
    {
        switch (status)
        {
            case MembershipCreateStatus.DuplicateUserName:
                return "Tên đăng nhập đã tồn tại. Bạn hãy chọn tên đăng nhập khác.";

            case MembershipCreateStatus.DuplicateEmail:
                return "Email này đã tồn tại. Hãy chọn email khác";

            case MembershipCreateStatus.InvalidPassword:
                return "Mật khẩu không hợp lệ. Hãy nhập lại mật khẩu";

            case MembershipCreateStatus.InvalidEmail:
                return "Địa chỉ email này không hợp lệ, hãy kiểm tra lại.";

            case MembershipCreateStatus.InvalidAnswer:
                return "Câu trả lời bảo mật không hợp lệ. Hãy kiểm tra lại";

            case MembershipCreateStatus.InvalidQuestion:
                return "Câu hỏi bảo mật không hợp lệ. Hãy kiểm tra lại.";

            case MembershipCreateStatus.InvalidUserName:
                return "Tên đăng nhập không hợp lệ. Hãy kiểm tra lại.";

            case MembershipCreateStatus.ProviderError:
                return "Các nhà cung cấp dịch vụ xác thực xảy ra một lỗi. Xin vui lòng xác nhận nhập cảnh của bạn và thử lại. Nếu vấn đề vẫn còn, xin vui lòng liên hệ với quản trị hệ thống của bạn.";

            case MembershipCreateStatus.UserRejected:
                return "Yêu cầu người sử dụng tạo ra đã được hủy bỏ. Xin vui lòng xác nhận nhập cảnh của bạn và thử lại. Nếu vấn đề vẫn còn, xin vui lòng liên hệ với quản trị hệ thống của bạn.";

            default:
                return "Một lỗi không rõ xảy ra. Xin vui lòng xác nhận nhập cảnh của bạn và thử lại. Nếu vấn đề vẫn còn, xin vui lòng liên hệ với quản trị hệ thống của bạn.";
        }
    }

}